package com.party.course.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.hutool.core.date.DateUtil;
import com.party.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.party.course.mapper.RealNameInfoMapper;
import com.party.course.domain.RealNameInfo;
import com.party.course.service.IRealNameInfoService;

import cn.hutool.core.util.IdUtil;
import org.springframework.transaction.annotation.Transactional;

/**
 * 实名认证Service业务层处理
 *
 * @author ruoyi
 * @date 2025-07-19
 */
@Service
public class RealNameInfoServiceImpl extends ServiceImpl<RealNameInfoMapper, RealNameInfo> implements IRealNameInfoService {
    @Autowired
    private RealNameInfoMapper realNameInfoMapper;

    /**
     * 查询实名认证
     *
     * @param id 实名认证主键
     * @return 实名认证
     */
    @Override
    public RealNameInfo view(String id) {
        return realNameInfoMapper.selectRealNameInfoById(id);
    }

    @Override
    public RealNameInfo findByUserId(String userId) {
        return realNameInfoMapper.findByUserId(userId);
    }

    /**
     * 查询实名认证列表
     *
     * @param realNameInfo 实名认证
     * @return 实名认证
     */
    @Override
    public List<RealNameInfo> findList(RealNameInfo realNameInfo) {
        return realNameInfoMapper.selectRealNameInfoList(realNameInfo);
    }

    /**
     * 新增实名认证
     *
     * @param realNameInfo 实名认证
     * @return 结果
     */
    @Override
    @Transactional
    public int add(RealNameInfo realNameInfo) {
        RealNameInfo nameInfo = realNameInfoMapper.findByUserId(SecurityUtils.getUserIdStr());
        if (nameInfo != null) {
            realNameInfo.setId(nameInfo.getId());
        }else {
            realNameInfo.setId(IdUtil.simpleUUID());
        }
        realNameInfo.setDelFlag("0");
        return realNameInfoMapper.insert(realNameInfo);
    }

    /**
     * 修改实名认证
     *
     * @param realNameInfo 实名认证
     * @return 结果
     */
    @Override
    public int updateEntity(RealNameInfo realNameInfo) {
        realNameInfo.setUpdateTime(DateUtil.date());
        return realNameInfoMapper.updateById(realNameInfo);
    }

    /**
     * 批量删除实名认证
     *
     * @param ids 需要删除的实名认证主键
     * @return 结果
     */
    @Override
    public int deleteIds(List<String> ids) {
        return realNameInfoMapper.deleteRealNameInfoByIds(ids);
    }

    /**
     * 删除实名认证信息
     *
     * @param id 实名认证主键
     * @return 结果
     */
    @Override
    public int deleteById(String id) {
        return realNameInfoMapper.deleteRealNameInfoById(id);
    }
}
